package main

import (
	"ch16/stream_grpc_test/proto"
	"context"
	"fmt"
	"google.golang.org/grpc"
)

func main() {

	// 1.建立一个链接
	conn, err := grpc.Dial("localhost:50052", grpc.WithInsecure())
	if err != nil {
		panic(err)
	}
	defer conn.Close() // 退出

	c := proto.NewGreeterClient(conn) //  通过proto建立类似client proxy连接

	// 服务端流模式
	res, _ := c.GetStream(context.Background(), &proto.StreamReqData{Data: "慕课网"}) // 获取

	for {
		a, err := res.Recv()
		if err != nil {
			fmt.Println(err)
			break
		}
		fmt.Println(a.Data)
	}

	//// 客户端流模式
	//putS, _ := c.PutStream(context.Background())
	//i := 0
	//for {
	//	i++
	//	putS.Send(&proto.StreamReqData{
	//		Data: fmt.Sprintf("慕课网%d", i),
	//	})
	//	time.Sleep(time.Second)
	//	if i > 10 {
	//		break
	//	}
	//}

	// 双向流模式
	//allStr, _ := c.AllStream(context.Background())
	//wg := sync.WaitGroup{}
	//wg.Add(2)
	//go func() {
	//	defer wg.Done()
	//	for {
	//		data, _ := allStr.Recv()
	//		fmt.Println("收到客户端消息：" + data.Data)
	//	}
	//}()
	//
	//// 集中学习protobuf ，grpc
	//go func() {
	//	defer wg.Done()
	//	for {
	//		_ = allStr.Send(&proto.StreamReqData{Data: "慕课网"})
	//		time.Sleep(time.Second)
	//	}
	//}()
	//
	//wg.Wait()

}
